package metier.sess;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import metier.entities.Devise;
import metier.entities.Paiement;


@Stateless(name="paiement")
public class PaiementEJBImpl implements IPaiementLocal{
	@PersistenceContext(unitName="PU_Cargaison")
	private EntityManager em;
	

	@Override
	public void addPaiement(Paiement d) {
		
		em.persist(d);
		
	}

	@Override
	public List<Paiement> getAllPaiement() {
		Query req=em.createQuery("select p from Paiement p");
		return req.getResultList();
	}

	@Override
	public Paiement getPaiement(Integer Id) {
		Paiement de=em.find(Paiement.class, Id);
		if(de==null)throw new RuntimeException("Paiement introuvable");
		return de;
	}

	@Override
	public void updatePaiement(Paiement d) {
		em.merge(d);
		
	}

	
	
	@Override
	public void deletePaiement(Integer Id) 
	{
		em.remove(getPaiement(Id));
		
	}

	@Override
	public List<Paiement> getAllPendingPaiement() 
	{
		Query req=em.createQuery("select p from Paiement p where p.StatutPaiement=false");
		return req.getResultList();
		
	}
	
	
	@Override
	public List<Paiement> getAllActivePaiement() {
		Query req=em.createQuery("select p from Paiement p where p.statut=true");
		return req.getResultList();
		
	}

	@Override
	public Paiement getPaiementByDeclaration(Integer idDeclaration,String raison,Integer idClient) {
		Query req=em.createQuery("select p from Paiement p where p.declaration.IdDeclaration="+idDeclaration+" and p.Raison='"+raison+"' and p.client.IdUtilisateur="+idClient );
		System.out.println("select p from Paiement p where p.declaration.IdDeclaration="+idDeclaration+" and p.Raison='"+raison+"' and p.client.IdUtilisateur="+idClient);
		if(req.getResultList().size()==0)
			return null;
			else
		return (Paiement) req.getResultList().get(0);
	}

	@Override
	public List<Paiement> listePaiementByStatus(Integer StatutPaiement) {
		Query req=em.createQuery("select p from Paiement p where p.StatutPaiement="+StatutPaiement);
		System.out.println("select p from Paiement p where p.StatutPaiement="+StatutPaiement);
		return req.getResultList();
	}

	@Override
	public List<Paiement> listePaiementPerUser(Integer IdUser) {
		Query req=em.createQuery("select p from Paiement p where  p.client.IdUtilisateur="+IdUser);
		
		return req.getResultList();
	}
	
	

}
